home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / util / pack / xfh132.lzh / XFH / src / libmygcc / gnulib / types.h < prev    next >
C/C++ Source or Header  |  1993-01-16  |  4KB  |  121 lines

  1. /* 
  2.    The following is a selective portion of the m68k.h file from the
  3.    gcc-2.0 distribution. I didn't want to include the whole file in this
  4.    library compilation.
  5.  */
  6.  
  7.  
  8. /* target machine storage layout */
  9.  
  10. /* Define this if most significant bit is lowest numbered
  11.    in instructions that operate on numbered bit-fields.
  12.    This is true for 68020 insns such as bfins and bfexts.
  13.    We make it true always by avoiding using the single-bit insns
  14.    except in special cases with constant bit numbers.  */
  15. #define BITS_BIG_ENDIAN 1
  16.  
  17. /* Define this if most significant byte of a word is the lowest numbered.  */
  18. /* That is true on the 68000.  */
  19. #define BYTES_BIG_ENDIAN 1
  20.  
  21. /* Define this if most significant word of a multiword number is the lowest
  22.    numbered.  */
  23. /* For 68000 we can decide arbitrarily
  24.    since there are no machine instructions for them.
  25.    So let's be consistent.  */
  26. #define WORDS_BIG_ENDIAN 1
  27.  
  28. /* number of bits in an addressible storage unit */
  29. #define BITS_PER_UNIT 8
  30.  
  31. /* Width in bits of a "word", which is the contents of a machine register.
  32.    Note that this is not necessarily the width of data type `int';
  33.    if using 16-bit ints on a 68000, this would still be 32.
  34.    But on a machine with 16-bit registers, this would be 16.  */
  35. #define BITS_PER_WORD 32
  36.  
  37. /* Width of a word, in units (bytes).  */
  38. #define UNITS_PER_WORD 4
  39.  
  40. /* Width in bits of a pointer.
  41.    See also the macro `Pmode' defined below.  */
  42. #define POINTER_SIZE 32
  43.  
  44. /* Allocation boundary (in *bits*) for storing arguments in argument list.  */
  45. #define PARM_BOUNDARY (TARGET_SHORT ? 16 : 32)
  46.  
  47. /* Boundary (in *bits*) on which stack pointer should be aligned.  */
  48. #define STACK_BOUNDARY 16
  49.  
  50. /* Allocation boundary (in *bits*) for the code of a function.  */
  51. #define FUNCTION_BOUNDARY 16
  52.  
  53. /* Alignment of field after `int : 0' in a structure.  */
  54. #define EMPTY_FIELD_BOUNDARY 16
  55.  
  56. /* No data type wants to be aligned rounder than this.  */
  57. #define BIGGEST_ALIGNMENT 16
  58.  
  59. /* Set this nonzero if move instructions will actually fail to work
  60.    when given unaligned data.  */
  61. #define STRICT_ALIGNMENT 1
  62.  
  63. #define INT_TYPE_SIZE 32
  64.  
  65. /* Define this as 1 if `char' should by default be signed; else as 0.  */
  66. #define DEFAULT_SIGNED_CHAR 1
  67. /* Define this if zero-extension is slow (more than one real instruction).  */
  68. #define SLOW_ZERO_EXTEND
  69.  
  70. /* Nonzero if access to memory by bytes is slow and undesirable.  */
  71. #define SLOW_BYTE_ACCESS 0
  72.  
  73. /* Define if shifts truncate the shift count
  74.    which implies one can omit a sign-extension or zero-extension
  75.    of a shift count.  */
  76. #define SHIFT_COUNT_TRUNCATED
  77. /* Value is 1 if truncating an integer of INPREC bits to OUTPREC bits
  78.    is done just by pretending it is already truncated.  */
  79. #define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
  80.  
  81. /* We assume that the store-condition-codes instructions store 0 for false
  82.    and some other value for true.  This is the value stored for true.  */
  83.  
  84. #define STORE_FLAG_VALUE -1
  85.  
  86.  
  87. /*****************************************************************************/
  88.  
  89. typedef long int SFVALUE;
  90. /* Define the C data type to use for an SImode value.  */
  91.  
  92. #ifndef SItype
  93. #define SItype long int
  94. #endif
  95.  
  96. /* Define the type to be used for returning an SF mode value
  97.    and the method for turning a float into that type.
  98.    These definitions work for machines where an SF value is
  99.    returned in the same register as an int.  */
  100.  
  101. #ifndef FLOAT_VALUE_TYPE  
  102. #define FLOAT_VALUE_TYPE int
  103. #endif
  104.  
  105. #ifndef INTIFY
  106. #define INTIFY(FLOATVAL)  (intify.f = (FLOATVAL), intify.i)
  107. #endif
  108.  
  109. #ifndef FLOATIFY
  110. #define FLOATIFY(INTVAL)  ((INTVAL).f)
  111. #endif
  112.  
  113. #ifndef FLOAT_ARG_TYPE
  114. #define FLOAT_ARG_TYPE union flt_or_int
  115. #endif
  116.  
  117. union flt_or_value { FLOAT_VALUE_TYPE i; float f; };
  118.  
  119. union flt_or_int { int i; float f; };
  120.  
  121.